.join {
  @apply inline-flex items-stretch;
  --join-ss: 0;
  --join-se: 0;
  --join-es: 0;
  --join-ee: 0;

  :where(.join-item) {
    border-start-start-radius: var(--join-ss, 0);
    border-start-end-radius: var(--join-se, 0);
    border-end-start-radius: var(--join-es, 0);
    border-end-end-radius: var(--join-ee, 0);
    * {
      --join-ss: var(--radius-field);
      --join-se: var(--radius-field);
      --join-es: var(--radius-field);
      --join-ee: var(--radius-field);
    }
  }

  > .join-item:where(:first-child) {
    --join-ss: var(--radius-field);
    --join-se: 0;
    --join-es: var(--radius-field);
    --join-ee: 0;
  }

  :first-child:not(:last-child) {
    :where(.join-item) {
      --join-ss: var(--radius-field);
      --join-se: 0;
      --join-es: var(--radius-field);
      --join-ee: 0;
    }
  }

  > .join-item:where(:last-child) {
    --join-ss: 0;
    --join-se: var(--radius-field);
    --join-es: 0;
    --join-ee: var(--radius-field);
  }

  :last-child:not(:first-child) {
    :where(.join-item) {
      --join-ss: 0;
      --join-se: var(--radius-field);
      --join-es: 0;
      --join-ee: var(--radius-field);
    }
  }

  > .join-item:where(:only-child) {
    --join-ss: var(--radius-field);
    --join-se: var(--radius-field);
    --join-es: var(--radius-field);
    --join-ee: var(--radius-field);
  }

  :only-child {
    :where(.join-item) {
      --join-ss: var(--radius-field);
      --join-se: var(--radius-field);
      --join-es: var(--radius-field);
      --join-ee: var(--radius-field);
    }
  }
}

.join-item {
  &:where(*:not(:first-child, :disabled, [disabled], .btn-disabled)) {
    margin-inline-start: calc(var(--border, 1px) * -1);
    margin-block-start: 0;
  }

  &:where(*:is(:disabled, [disabled], .btn-disabled)) {
    border-width: var(--border, 1px) 0 var(--border, 1px) var(--border, 1px);
  }
}

.join-vertical {
  @apply flex-col;

  > .join-item:first-child {
    --join-ss: var(--radius-field);
    --join-se: var(--radius-field);
    --join-es: 0;
    --join-ee: 0;
  }

  :first-child:not(:last-child) {
    .join-item {
      --join-ss: var(--radius-field);
      --join-se: var(--radius-field);
      --join-es: 0;
      --join-ee: 0;
    }
  }

  > .join-item:last-child {
    --join-ss: 0;
    --join-se: 0;
    --join-es: var(--radius-field);
    --join-ee: var(--radius-field);
  }

  :last-child:not(:first-child) {
    .join-item {
      --join-ss: 0;
      --join-se: 0;
      --join-es: var(--radius-field);
      --join-ee: var(--radius-field);
    }
  }

  > .join-item:only-child {
    --join-ss: var(--radius-field);
    --join-se: var(--radius-field);
    --join-es: var(--radius-field);
    --join-ee: var(--radius-field);
  }

  :only-child {
    .join-item {
      --join-ss: var(--radius-field);
      --join-se: var(--radius-field);
      --join-es: var(--radius-field);
      --join-ee: var(--radius-field);
    }
  }

  .join-item {
    &:where(*:not(:first-child)) {
      margin-inline-start: 0;
      margin-block-start: calc(var(--border, 1px) * -1);
    }
  }
}

.join-horizontal {
  @apply flex-row;

  > .join-item:first-child {
    --join-ss: var(--radius-field);
    --join-se: 0;
    --join-es: var(--radius-field);
    --join-ee: 0;
  }

  :first-child:not(:last-child) {
    .join-item {
      --join-ss: var(--radius-field);
      --join-se: 0;
      --join-es: var(--radius-field);
      --join-ee: 0;
    }
  }

  > .join-item:last-child {
    --join-ss: 0;
    --join-se: var(--radius-field);
    --join-es: 0;
    --join-ee: var(--radius-field);
  }

  :last-child:not(:first-child) {
    .join-item {
      --join-ss: 0;
      --join-se: var(--radius-field);
      --join-es: 0;
      --join-ee: var(--radius-field);
    }
  }

  > .join-item:only-child {
    --join-ss: var(--radius-field);
    --join-se: var(--radius-field);
    --join-es: var(--radius-field);
    --join-ee: var(--radius-field);
  }

  :only-child {
    .join-item {
      --join-ss: var(--radius-field);
      --join-se: var(--radius-field);
      --join-es: var(--radius-field);
      --join-ee: var(--radius-field);
    }
  }

  .join-item {
    &:where(*:not(:first-child)) {
      margin-inline-start: calc(var(--border, 1px) * -1);
      margin-block-start: 0;
    }
  }
}
